/**
 * 该类是用来封装得到查询用户信息接口的查询条件和相关配置项
 */

class UserParams {
    constructor(){

    };
    // 该类的静态方法与属性
    // counts为查询到的数据总量
    static counts=0;
    // 该方法为查询数据前的筛选条件
    static userDataObj(obj){
        let dataObj={
            date:{}
        };
        if(obj.startTime && obj.endTime){//如果前端两者都传了
            dataObj.date.$gte=obj.startTime;
            dataObj.date.$lte=obj.endTime;
        }else if(obj.startTime && !obj.endTime){//如果只传了开始时间
            dataObj.date.$gte=obj.startTime;
        }else if(!obj.startTime && obj.endTime){//如果只传了结束时间
            dataObj.date.$lte=obj.endTime;
        };
        // 因为如果筛选条件中如果没有条件将会报错--如{date:{}}会报错
        if(dataObj.date && Object.keys(dataObj.date).length === 0){
            Reflect.deleteProperty(dataObj,"date");
        };
        return dataObj;
    };
    // 该方法为查询到数据后的条件
    static userOptionsObj(obj){
        let findOptionsObj={
            skip:0,
            limit:5,
            sort:{
                date:-1
            }
        };
        Object.keys(obj).forEach((item)=>{
            if(item === "pageNum" || item === "pageSize"){
                obj[item]=Number(obj[item]);
            };
        });
        if(obj.pageNum && obj.pageSize){//如果前端两者都传了
            findOptionsObj.skip=(obj.pageNum-1)*obj.pageSize;
            findOptionsObj.limit=obj.pageSize;
        }else if(obj.pageNum && !obj.pageSize){//如果前端只传了当前页
            findOptionsObj.skip=(obj.pageNum-1)*findOptionsObj.limit;
        }else if(!obj.pageNum && obj.pageSize){//如果前端只传了当前页的数量
            findOptionsObj.skip=findOptionsObj.skip*obj.pageSize;
        };
        return findOptionsObj;
    };
};

module.exports=UserParams;